在上一個單元,已經學習到如何使用 if
判斷式,接下來這個單元進入到迴圈。if
判斷式可以方便使用變數來控制內容是否顯示,而迴圈則是方便顯示重複的內容。
迴圈通常會跟陣列一起使用,先宣告一個陣列變數:
<script>
export default {
name: 'App',
data() {
return {
users1: ['Jake', 'Allan', 'Eason'],
};
},
};
</script>
宣告了一個陣列 user1,然後放入三個字串,陣列的意思是說將這三個字串放在一個有序列功能的變數裡面,這個變數就是 user1,可以只透過 user1 來存取這三個字串,而不需要重複宣告三個變數來放這三個字串。
跟 v-if
類似,迴圈是使用 v-for
來表示:
<template>
<p v-for="user in users1" :key="user">{{ user }}</p>
</template>
<script>
export default {
name: 'App',
data() {
return {
users1: ['Jake', 'Allan', 'Eason'],
};
},
};
</script>
宣告了一個陣列 user1,放入三個字串,在 <template></template>
使用 v-for
來走訪陣列的所有元素,使用 user in users1
語法定義了另外一個變數 user,就是用來走訪陣列 users1 的所有元素,所以這個變數 user 就可以使用 {{ user }}
來顯示。
迴圈還可以透過 index 變數來表示資料的編號:
<template>
<p v-for="(user, index) in users1" :key="user">{{ index }} {{ user }}</p>
</template>
<script>
export default {
name: 'App',
data() {
return {
users1: ['Jake', 'Allan', 'Eason'],
};
},
};
</script>
但這樣的陣列有時候不能滿足某些需求,例如除了名字之外,還需要將每個人的 email 一起對應,這個時候就會需要使用物件陣列:
<script>
export default {
name: 'App',
data() {
return {
users2: [
{ name: 'Jake', email: 'jake@gmail.com' },
{ name: 'Allan', email: 'allan@gmail.com' },
{ name: 'Eason', email: 'eason@gmail.com' },
],
};
},
};
</script>
物件陣列內的元素必須要用 {}
包起來,然後必須要指定 key,例如 name: 'Jake'
,就表示宣告一個變數 name 等於 Jake。email: 'jake@gmail.com'
,就表示宣告一個變數 email 等於 jake@gmail.com。所以這邊的 name 跟 email 就是指定的 key。
然後就可以很方便的使用迴圈來直接存取這兩個 key:
<template>
<p v-for="(user, index) in users2" :key="user.email">
{{ index }} {{ user.name }} {{ user.email }}
</p>
</template>
<script>
export default {
name: 'App',
data() {
return {
users2: [
{ name: 'Jake', email: 'jake@gmail.com' },
{ name: 'Allan', email: 'allan@gmail.com' },
{ name: 'Eason', email: 'eason@gmail.com' },
],
};
},
};
</script>
因為變數 user 會走訪陣列 user2 的每一個元素,就可以直接使用變數 user 來指定 key,存取 name 與 email 了。
最後將上一個單元學到的 v-if 判斷,加入到迴圈判斷:
<template>
<div v-for="(user, index) in users1" :key="user">
<p v-if="user === 'Jake'">{{ index }} {{ user }}</p>
</div>
</template>
<script>
export default {
name: 'App',
data() {
return {
users1: ['Jake', 'Allan', 'Eason'],
};
},
};
</script>
user 這個變數走訪陣列 user1,然後經過 if 判斷是否會等於 Jake,如果等於 Jake 才會顯出其內容。
Vue3 - 從零開始學 - Day5 [完]
這裡有點不懂 :key="這裡要怎麼選擇"
這幾個例子有點搞混
:key
是表示要指定一個變數來當作 key,
但因為這裡的 <p v-for="user in users1" :key="user">{{ user }}</p>
user1 是一個陣列,裡面沒有其他的參考變數,所以可以直接指定這個 user 即可。